# -*- coding:utf-8 -*-
# title           :
# description     :
# author          :Python超人/三月三提供
# date            :2024-08-02
# link            :https://gitcode.net/pythoncr/
# python_version  :3.9
# ==============================================================================
import os

from 神笔码靓.神笔库 import 样式工具集
from 神笔码靓.神笔库.文字工具集 import 字符串去重, 字符密度排序
from 神笔码靓.神笔库.神笔绘图板 import 神笔绘图板
from 神笔码靓.神笔库.定义集 import *
from 神笔码靓.神笔库.配置 import *
from 神笔码靓.神笔库.通用工具集 import *

from 神笔码靓.码靓库.绘画.手机文字像素艺术画 import 手机文字像素艺术画


class 密度文字像素壁纸(手机文字像素艺术画):
    def __init__(self, 作品文件路径, 图片路径, 图片X偏移像素=0, 密度文字颜色=颜色.黑色, 像素列数=60, 像素形状="心形像素",
                 密度文字列表=None, 密度文字列表倒序=否, 像素缩放=1, 显示整机=否, 显示状态栏=是, 锁屏=是,锁屏字体颜色=颜色.白色,
                 手机颜色="#163844"):
        super(密度文字像素壁纸, self).__init__(作品文件路径=作品文件路径, 文字内容=None, 图片路径=图片路径, 像素形状=像素形状,
                                       像素缩放=像素缩放, 像素透明度=1, 自己来控制像素=是,
                                       像素列数=像素列数, 左空字数=2, 右空字数=1, 上字空数=4, 图片左移像素点=图片X偏移像素,
                                       显示整机=显示整机, 显示状态栏=显示状态栏, 锁屏=锁屏,锁屏字体颜色=锁屏字体颜色,手机颜色=手机颜色)
        # self.显示图框()
        self.图片路径 = 图片路径
        if 密度文字列表 is None:
            密度文字列表 = "∷♂◎±ⅹ入八火尘千水齐花狐虾车老菜师滑尾象糊黄艚"

        self.密度文字列表 = 密度文字列表
        self.密度文字列表倒序 = 密度文字列表倒序
        self.密度文字颜色 = 密度文字颜色

    def 计算颜色亮度值(self, r, g, b):
        return 0.299 * r + 0.587 * g + 0.114 * b

    def 计算颜色灰度值(self, r, g, b):
        return (r + g + b) / 3

    def 获取文字排序密度列表(self):
        if hasattr(self, "排序后的列表"):
            return getattr(self, "排序后的列表")
        # 文字列表 = "∷♂◎±ⅹ入八火尘千水齐马旺妤想象魏艚"
        # 文字列表 = "∷♂◎±ⅹ入八火尘千水齐姣涵语陈刚象魏艚"
        #  花0.65 车0.68 老0.71 菜0.76 师0.78 滑0.81 糊0.87  黄0.93  齐0.6 涵0.71 语0.71
        # 文字列表 = "∷♂◎±ⅹ入八火尘千水齐花狐虾车老菜师滑尾象糊黄艚"  # 姣0.66 "狐0.67 虾0.68 尾0.84  象0.85 魏0.9"
        文字列表 = 字符串去重(self.密度文字列表)
        文字列表 = 字符密度排序(文字列表, self.密度文字列表倒序)
        文字列表 = list(文字列表)
        setattr(self, "排序后的列表", 文字列表)
        return 文字列表

    def 控制像素的形状大小颜色(self, 圆像素形状, 像素尺寸大小, 颜色RGB):
        r, g, b = 颜色RGB
        # 灰度值 = calculate_grayscale(r, g, b)
        亮度值 = self.计算颜色亮度值(r, g, b)
        亮度率 = 亮度值 / 255
        暗度率 = 1 - 亮度率
        # 像素尺寸大小 = 神笔.圆像素宽 * 暗度率 / 1.5
        # 根据面积排序
        排序后的列表 = self.获取文字排序密度列表()
        # 填充颜色 = "black"
        填充颜色 = self.密度文字颜色
        文字索引 = int(round(暗度率 * len(排序后的列表) - 1, 0))
        # print(文字索引)
        return 排序后的列表[文字索引], 像素尺寸大小 * 2, 填充颜色

    def 遮罩背景颜色(self):
        # return None
        return 颜色.黑色

    def 遮罩背景元素(self):
        开始位置 = (self.屏幕宽, self.屏幕高)
        结束位置 = (0, 0)
        渐变色 = self.创建彩虹线性渐变色(开始位置=开始位置, 结束位置=结束位置,
                             关键点偏移=(0, 1.0), 关键点透明度=1, 彩虹七色=样式工具集.彩虹色2)
        矩形 = self.画矩形(x=0, y=0, 宽=self.屏幕宽, 高=self.屏幕高, 填充颜色=渐变色, 描边宽度=0).添加到列表(self.屏幕元素列表)
        return 矩形

    def 完成前执行(self):
        遮罩背景颜色_ = self.遮罩背景颜色()
        if 遮罩背景颜色_:
            背景黑 = self.画矩形(x=0, y=0, 宽=self.屏幕宽, 高=self.屏幕高, 填充颜色=遮罩背景颜色_).添加到列表(self.屏幕元素列表)
            遮罩背景元素 = self.遮罩背景元素()

            遮罩元素_ = self.创建组合(元素列表=self.像素元素列表)
            self.遮罩(遮罩元素_=遮罩元素_, 被遮元素=遮罩背景元素)

# if __name__ == '__main__':
#     密度文字列表 = "．∶…¨∷∴＂♀♂☆～＊！◎÷ｊｒｃ？ｓ⊙ｙ≈ⅹ︽∝¤≠ａ◆∈ɡｑ≡ｋ∞４Δφ※δ几大卫太王己必千北汉亿" \
#              "元水杰兆天冬恋武京庆金龙姣好虾宋旺宝钱良楚英卓帝君寿神慧豪鄂鑫爱量圆满喜粮赐静勇情晴精膊醒隋圊圃"
#     # 密度文字列表 = "∷♂◎±ⅹ入八火尘千水齐花狐虾车老菜师滑尾象糊黄艚"
#     图片路径 = 资源库目录("图片/手机壁纸/超级玛丽.jpg")
#     # 神笔 = 密度文字像素壁纸(作品文件路径="密度文字像素壁纸.svg", 图片路径=图片路径, 密度文字颜色=颜色.红色, 图片X偏移像素=30,
#     #               密度文字列表=密度文字列表, 密度文字列表倒序=否)
#
#     神笔 = 密度文字像素壁纸(作品文件路径="密度文字像素壁纸2.svg", 图片路径=图片路径, 密度文字颜色=颜色.白色, 图片X偏移像素=30,
#                   密度文字列表=密度文字列表, 密度文字列表倒序=是)
#     神笔.完成()
